var selectNodeId, selectNodeYear, selectNodePeriodId;
var Article = Ext.data.Record.create([{
			name : 'id',
			mapping : 'id',
			type : 'int'
		}, {
			name : 'year',
			mapping : 'year',
			type : 'int'
		}, {
			name : 'period',
			mapping : 'period',
			type : 'int'
		}, {
			name : 'title',
			mapping : 'title',
			type : 'string'
		}, {
			name : 'type',
			mapping : 'type',
			type : 'string'
		}, {
			name : 'content',
			mapping : 'content',
			type : 'string'
		}, {
			name : 'image_id',
			mapping : 'image_id',
			type : 'string'
		}, {
			name : 'imageUrl',
			mapping : 'imageUrl',
			type : 'string'
		}, {
			name : 'publisher',
			mapping : 'publisher',
			type : 'string'
		}, {
			name : 'publish_date',
			mapping : 'publish_date',
			type : 'date'
		}, {
			name : 'user',
			mapping : 'user',
			type : 'string'
		}, {
			name : 'stamp',
			mapping : 'stamp',
			type : 'date'
		}])

var expander = new Ext.grid.RowExpander({
	tpl : new Ext.Template('<p><table width="480" style="padding-left:20px" border="0" cellspacing="0" cellpadding="0">'
			+ '<tr><td width="300" valign="top"><img src="/govdomain/resource/cache/images/{image_id}" onerror=\'this.src="/govdomain/images/nopic.jpg"\'/></td></tr>'
			+ '<td width="476" colspan="4"><table width="100%"  border="0" cellspacing="6" cellpadding="4"></tr>'
			+ '<tr><td colspan="5" valign="top">&nbsp;{image_id}</td></tr><tr><td colspan="5" valign="top"><h4>内容</h4></td></tr>'
			+ '<tr><td colspan="5" valign="top">{content}</td></tr></table></p>')
});

var cm_article = new Ext.grid.ColumnModel([expander, {
			header : '年度',
			width : 30,
			dataIndex : 'year',
			sortable : true
		}, {
			header : '期刊号',
			width : 30,
			dataIndex : 'period',
			id : 'period',
			sortable : true
		}, {
			header : '标题',
			width : 120,
			dataIndex : 'title',
			sortable : true
		}, {
			header : '所属分类',
			width : 90,
			dataIndex : 'type',
			sortable : true,
			renderer : function(v) {
				return v == 1 ? '重要新闻' : '综合新闻'
			}
		}, {
			header : '作者',
			width : 40,
			dataIndex : 'publisher',
			sortable : true
		}, {
			header : '发布时间',
			width : 50,
			dataIndex : 'publish_date',
			renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
		}, {
			header : '操作员',
			width : 40,
			dataIndex : 'username'
		}, {
			header : '操作时间',
			width : 90,
			dataIndex : 'timestamp',
			sortable : true
		}]);

var ds_article = new Ext.data.Store({
			url : 'viewaction.do?method=queryAllArticles',
			reader : new Ext.data.JsonReader({
						totalProperty : 'totalProperty',
						root : 'root'
					}, [{
								name : 'id',
								type : 'int'
							}, {
								name : 'year',
								type : 'int'
							}, {
								name : 'period',
								type : 'int'
							}, {
								name : 'title',
								type : 'string'
							}, {
								name : 'publisher',
								type : 'string'
							}, {
								name : 'image_id',
								type : 'string'
							}, {
								name : 'type',
								type : 'string'
							}, {
								name : 'content',
								type : 'string'
							}, {
								name : 'publish_date',
								type : 'date',
								dateFormat : 'time'
							}, {
								name : 'username',
								type : 'string'
							}, {
								name : 'timestamp',
								type : 'string'
							}])
		});
var ds_year_select = new Ext.data.Store({
			url : 'viewaction.do?method=queryYears',
			reader : new Ext.data.JsonReader({
						root : 'root'
					}, [{
								name : 'year',
								type : 'string'
							}])
		});

var articleEditForm = new Ext.FormPanel({
			url : 'articleaction.do?method=updateArticle',
			labelAlign : 'right',
			labelWidth : 70,
			bodyStyle : 'padding:5px',
			border : false,
			fileUpload : true,
			baseCls : 'x-plain',
			items : [{
				layout : 'column',
				border : false,
				baseCls : 'x-plain',
				items : [{
							columnWidth : .5,
							layout : 'form',
							baseCls : 'x-plain',
							border : false,
							defaultType : 'textfield',
							defaults : {
								anchor : '90%'
							},
							items : [{
										fieldLabel : '年度',
										name : 'year',
										disabled : true
									}, {
										fieldLabel : '标题',
										id : 'title_',
										name : 'title',
										maxLength : 50,
										allowBlank : false
									}, {
										fieldLabel : '作者',
										name : 'publisher',
										maxLength : 50
									}, {
										fieldLabel : '新闻图片',
										name : 'upload',
										inputType : 'file'
									}, {
										xtype : 'hidden',
										name : 'period_id'
									}, {
										xtype : 'hidden',
										name : 'id'
									}, {
										xtype : 'hidden',
										name : 'image_id'
									}]
						}, {
							columnWidth : .5,
							layout : 'form',
							border : false,
							baseCls : 'x-plain',
							defaultType : 'textfield',
							defaults : {
								anchor : '90%'
							},
							items : [{
										fieldLabel : '期号',
										name : 'period',
										disabled : true,
										maxLength : 11
									}, {
										xtype : 'combo',
										fieldLabel : '新闻类型',
										hiddenName : 'type',
										valueField : 'typevalue',
										displayField : 'name',
										mode : 'local',
										store : new Ext.data.SimpleStore({
													fields : ['typevalue',
															'name'],
													data : [['1', '重要新闻'],
															['2', '综合新闻']]
												}),
										editable : false,
										allowBlank : false,
										triggerAction : 'all'
									}, {
										xtype : 'xdatetime',
										fieldLabel : '发布时间',
										name : 'publish_date_time',
										dateFormat : 'Y-m-d'
									}]
						}]
			}, {
				xtype : 'tabpanel',
				plain : true,
				bodyBorder : false,
				activeTab : 0,
				height : 200,
				defaults : {
					bodyStyle : 'padding:2px'
				},
				items : [{
							title : '内容',
							layout : 'fit',
							items : {
								xtype : 'textarea',
								name : 'content',
								maxLength : 1000,
								allowBlank : false
							}
						}]
			}],
			buttonAlign : 'center',
			minButtonWidth : 60,
			buttons : [{
				text : '修改',
				handler : function(btn) {
					if (articleEditForm.getForm().isValid()) {
						btn.disable();
						var bnfield = articleEditForm.getForm()
								.findField('title_');
						articleEditForm.getForm().submit({
							waitTitle : '请稍候',
							waitMsg : '正在修改数据,请稍候...',
							success : function(form, action) {
								Ext.Msg.show({
											title : '成功提示',
											msg : '[ ' + bnfield.getValue()
													+ ' ]   修改成功!!',
											buttons : Ext.MessageBox.OK,
											icon : Ext.Msg.INFO,
											fn : function() {
												btn.enable()
											}
										});
								var store = grid_article.getStore();
								var article = new Article({
									id : form.findField('id').getValue(),
									image_id : action.result.image_id,
									publish_date : form
											.findField('publish_date_time')
											.getValue(),
									title : bnfield.getValue(),
									year : form.findField('year').getValue(),
									period : form.findField('period')
											.getValue(),
									type : form.findField('type').getValue(),
									publisher : form.findField('publisher')
											.getValue(),
									content : form.findField('content')
											.getValue()
										// username : action.result.username,
										// timestamp : action.result.timestamp
									});
								var index = store.indexOf(grid_article
										.getSelectionModel().getSelected());
								store.remove(grid_article.getSelectionModel()
										.getSelected());
								store.insert(index, article);
								grid_article.getSelectionModel()
										.selectRow(index);

							},
							failure : function(form, action) {
								Ext.Msg.show({
											title : '错误提示',
											msg : action.result.contentTypeIsValid
													? '操作失败'
													: '操作失败,文件类型不正确!',
											buttons : Ext.Msg.OK,
											fn : function() {
												bnfield.focus(true);
												btn.enable();
											},
											icon : Ext.Msg.ERROR
										});
							}
						});
					}
				}
			}, {
				text : '重置',
				handler : function() {
					var obj = document.getElementById("upload");
					if (obj) {
						obj.outerHTML = obj.outerHTML;
					}
					var record = grid_article.getSelectionModel().getSelected();
					if (record) {
						window_edit_article.show();
						articleEditForm.getForm().reset();
						articleEditForm.getForm().loadRecord(record);
						articleEditForm.getForm()
								.findField('publish_date_time')
								.setValue(new Date(record.get('publish_date')));
					}
				}
			}, {
				text : '取消',
				handler : function() {
					articleEditForm.getForm().reset();
					this.ownerCt.ownerCt.hide();
					var obj = document.getElementById("upload");
					if (obj) {
						obj.outerHTML = obj.outerHTML;
					}
				}
			}]
		});

var articleForm = new Ext.FormPanel({
	url : 'articleaction.do?method=addArticle',
	labelAlign : 'right',
	labelWidth : 70,
	bodyStyle : 'padding:5px',
	border : false,
	fileUpload : true,
	baseCls : 'x-plain',
	items : [{
		layout : 'column',
		border : false,
		baseCls : 'x-plain',
		items : [{
					columnWidth : .5,
					layout : 'form',
					baseCls : 'x-plain',
					border : false,
					defaultType : 'textfield',
					defaults : {
						anchor : '93%'
					},
					items : [{
						/* xtype : 'combo', */
						fieldLabel : '年度',
						id : 'year',
						name : 'year',
						disabled : true
							/*
							 * editable : false, valueField : 'year',
							 * displayField : 'year', mode : 'remote', store :
							 * ds_year_select, allowBlank : false, triggerAction :
							 * 'all', loadingText : '加载中...', listeners : {
							 * 'select' : function(combo, record) {
							 * articleForm.getForm().findField('year').reset();
							 * articleForm.getForm().findField('year').setValue(record.data.year); } }
							 */
						}, {
						fieldLabel : '标题',
						id : 'title',
						name : 'title',
						maxLength : 50,
						allowBlank : false
					}, {
						fieldLabel : '作者',
						name : 'publisher',
						maxLength : 50
					}, {
						fieldLabel : '新闻图片',
						name : 'upload',
						inputType : 'file'
					}, {
						xtype : 'hidden',
						name : 'period_id'
					}]
				}, {
					columnWidth : .5,
					layout : 'form',
					border : false,
					baseCls : 'x-plain',
					defaultType : 'textfield',
					defaults : {
						anchor : '93%'
					},
					items : [{
								fieldLabel : '期号',
								name : 'period',
								disabled : true,
								maxLength : 11
							}, {
								xtype : 'combo',
								fieldLabel : '新闻类型',
								id : 'newstype',
								hiddenName : 'type',
								valueField : 'typevalue',
								displayField : 'name',
								value : '1',
								mode : 'local',
								store : new Ext.data.SimpleStore({
											fields : ['typevalue', 'name'],
											data : [['1', '重要新闻'],
													['2', '综合新闻']]
										}),
								editable : false,
								allowBlank : false,
								triggerAction : 'all'
							}, {
								xtype : 'xdatetime',
								fieldLabel : '发布时间',
								name : 'publish_date_time',
								dateFormat : 'Y-m-d',
								dateValue : new Date()
							}]
				}]
	}, {
		xtype : 'tabpanel',
		plain : true,
		bodyBorder : false,
		activeTab : 0,
		height : 200,
		defaults : {
			bodyStyle : 'padding:2px'
		},
		items : [{
					title : '内容',
					layout : 'fit',
					items : {
						xtype : 'textarea',
						name : 'content',
						maxLength : 1000,
						allowBlank : false
					}
				}]
	}],
	buttonAlign : 'center',
	minButtonWidth : 60,
	buttons : [{
		text : '添加',
		handler : function(btn) {
			if (articleForm.getForm().isValid()) {
				btn.disable();
				var bnfield = articleForm.getForm().findField('title');
				articleForm.getForm().submit({
					waitTitle : '请稍候',
					waitMsg : '正在提交表单数据,请稍候...',
					success : function(form, action) {
						var store = grid_article.getStore();
						if (store.data.length <= 20) {
							var description = '';
							if (form.findField('content')) {
								description = form.findField('content')
										.getValue();
							}
							var article = new Article({
								id : action.result.id,
								image_id : action.result.image_id,
								publish_date : new Date(action.result.publish_date),
								title : bnfield.getValue(),
								year : form.findField('year').getValue(),
								period : form.findField('period').getValue(),
								type : form.findField('type').getValue(),
								publisher : form.findField('publisher')
										.getValue(),
								content : form.findField('content').getValue()
									// username : action.result.username,
									// timestamp : action.result.timestamp
							});
							store.insert(0, [article]);
							if (store.data.length > 20) {
								store
										.remove(store.getAt(store.data.length
												- 1));
							}

						}
						Ext.Msg.show({
									title : '提示',
									msg : '[ ' + bnfield.getValue()
											+ ' ]   添加成功!!',
									buttons : Ext.MessageBox.OK,
									icon : Ext.Msg.INFO
								});
						articleForm.getForm().reset();
						var obj = document.getElementById("upload");
						if (obj) {
							obj.outerHTML = obj.outerHTML;
						}
						articleForm.getForm().findField('year')
								.setValue(selectNodeYear);
						articleForm.getForm().findField('period')
								.setValue(selectNodeId);
						articleForm.getForm().findField('period_id')
								.setValue(selectNodePeriodId);
						btn.enable();
					},
					failure : function(form, action) {
						Ext.Msg.show({
									title : '错误提示',
									msg : action.result.contentTypeIsValid
											? '操作失败'
											: '操作失败,文件类型不正确!',
									buttons : Ext.Msg.OK,
									fn : function() {
										bnfield.focus(true);
										btn.enable();
									},
									icon : Ext.Msg.ERROR
								});
					}
				});
			}
		}
	}, {
		text : '重置',
		handler : function() {
			this.ownerCt.form.reset();
			var obj = document.getElementById("upload");
			if (obj) {
				obj.outerHTML = obj.outerHTML;
			}
			articleForm.getForm().findField('year').setValue(selectNodeYear);
			articleForm.getForm().findField('period').setValue(selectNodeId);
			articleForm.getForm().findField('period_id')
					.setValue(selectNodePeriodId);
		}
	}, {
		text : '取消',
		handler : function() {
			this.ownerCt.ownerCt.hide();
			var obj = document.getElementById("upload");
			if (obj) {
				obj.outerHTML = obj.outerHTML;
			}
		}
	}]
});
var window_edit_article = new Ext.Window({
			title : '編輯报道',
			width : 620,
			resizable : false,
			autoHeight : true,
			modal : true,
			closeAction : 'hide',
			listeners : {
				'hide' : function() {
					var obj = document.getElementById("upload");
					if (obj) {
						obj.outerHTML = obj.outerHTML;
					}
					this.findById('title_').ownerCt.ownerCt.ownerCt.form
							.reset();
				}
			},
			items : [articleEditForm]
		});
var window_add_article = new Ext.Window({
			title : '添加报道',
			width : 600,
			resizable : false,
			autoHeight : true,
			modal : true,
			closeAction : 'hide',
			listeners : {
				'hide' : function() {
					var obj = document.getElementById("upload");
					if (obj) {
						obj.outerHTML = obj.outerHTML;
					}
					this.findById('title').ownerCt.ownerCt.ownerCt.form.reset();
				}
			},
			items : [articleForm]
		});

var btn_add_article = new Ext.Button({
			text : '添加报道',
			iconCls : 'icon-add',
			handler : function() {
				window_add_article.show();
				var obj = document.getElementById("upload");
				if (obj) {
					obj.outerHTML = obj.outerHTML;
				}
				articleForm.getForm().findField('year')
						.setValue(selectNodeYear);
				articleForm.getForm().findField('period')
						.setValue(selectNodeId);
				articleForm.getForm().findField('period_id')
						.setValue(selectNodePeriodId);
			}
		});

var btn_edit_article = new Ext.Button({
			text : '编辑报道',
			iconCls : 'icon-edit',
			handler : function() {
				var obj = document.getElementById("upload");
				if (obj) {
					obj.outerHTML = obj.outerHTML;
				}
				var record = grid_article.getSelectionModel().getSelected();
				if (record) {
					window_edit_article.show();
					articleEditForm.getForm().loadRecord(record);
					articleEditForm.getForm().findField('publish_date_time')
							.setValue(new Date(record.get('publish_date')));
				} else {
					Ext.Msg.show({
								title : '提示',
								msg : '请先选择需要修改的报道!',
								buttons : Ext.MessageBox.OK,
								icon : Ext.Msg.INFO
							});
				}
			}
		});

var btn_del_article = new Ext.Button({
			text : '删除报道',
			iconCls : 'icon-del',
			handler : function() {
				var record = grid_article.getSelectionModel().getSelected();
				if (record) {
					Ext.Msg.confirm('确认删除', '你确定删除该条记录?', function(btn) {
								if (btn == 'yes') {
									Ext.Ajax.request({
												url : 'articleaction.do?method=deleteArticle',
												params : {
													id : record.data.id,
													image_id : record.data.image_id
												},
												success : function() {
													grid_article.getStore()
															.remove(record);
												},
												failure : function() {
													Ext.Msg.show({
																title : '错误提示',
																msg : '删除时发生错误!',
																buttons : Ext.Msg.OK,
																icon : Ext.Msg.ERROR
															});
												}
											});
								}
							});
				}
			}
		});
/*
 * var btn_search_Article = new Ext.Button({ text : '查询', iconCls :
 * 'icon-search', handler : searchArticle });
 * 
 * var text_search_Article = new Ext.form.TextField({ name :
 * 'textSearchArticle', width : 200, emptyText : '多条件可用逗号或者空格隔开!', listeners : {
 * 'specialkey' : function(field, e) { if (e.getKey() == Ext.EventObject.ENTER) {
 * searchArticle(); } } } });
 * 
 * var searchArticle = function() { ds_article.baseParams.conditions =
 * btn_search_Article.getValue(); ds_article.load({params : {start : 0,limit :
 * 20} }); }
 */
var grid_article = new Ext.grid.GridPanel({
			region : 'center',
			loadMask : {
				msg : '数据加载中...'
			},
			enableColumnMove : false,
			cm : cm_article,
			ds : ds_article,
			sm : new Ext.grid.RowSelectionModel({
						singleSelect : true
					}),
			autoExpandColumn : 'title',
			viewConfig : {
				forceFit : true
			},
			plugins : expander,
			tbar : [btn_add_article, '-', btn_edit_article,'-',btn_del_article],
			/*
			 * tbar : [btn_add_article, '-',btn_edit_article, '-',
			 * btn_del_article, '-',
			 * text_search_Article,btn_search_Article,searchArticle],
			 */
			bbar : new Ext.PagingToolbar({
						pageSize : 20,
						store : ds_article,
						displayInfo : true,
						displayMsg : '第 {0} - {1} 条 共 {2} 条',
						emptyMsg : "没有记录"
					})
		});

var article_panel = new Ext.Panel({
			title : '期刊信息管理',
			iconCls : 'icon-plugin',
			region : 'center',
			border : 'layout',
			frame : true,
			layout : 'border',
			defaults : {
				collapsible : true,
				split : true
			},
			items : [{
						region : 'center',
						layout : 'border',
						items : [grid_article]
					}]
		});

var p_article = {
	id : 'article-panel',
	border : false,
	layout : 'border',
	items : [article_panel]
};
